package calcsdk.nw;

import calcsdk.Calcsdk;

/**
 *
 * @author 3bl3gamer
 */
public class TestBaseSolve {
	public static String processSimm(float mas[][], Calcsdk core) {
		int w=mas.length;
		
		int visitFrom[]=new int[w];
		for (int i=2;i<w;i++)
			if (mas[0][i]<mas[1][i])
				visitFrom[i]=0; else visitFrom[i]=1;
		
		float minDelta=Float.POSITIVE_INFINITY;
		int min0i=-1;
		for (int i=2;i<w;i++) {
			float d=mas[0][i]+mas[i][1]-mas[visitFrom[i]][i]*2;
			if (d<0) d=-d;
			if (d<minDelta) {minDelta=d; min0i=i;}
		}
		minDelta=Float.POSITIVE_INFINITY;
		int min1i=-1;
		for (int i=2;i<w;i++) {
			if (i==min0i) continue;
			float d=mas[0][i]+mas[i][1]-mas[visitFrom[i]][i]*2;
			if (d<0) d=-d;
			if (d<minDelta) {minDelta=d; min1i=i;}
		}
		
        String ret="";
		int nameShift=1;
		float len=0;
		for (int i=2;i<w;i++) {
			if (i==min0i || i==min1i || visitFrom[i]!=0) continue;
			ret+=(0+nameShift)+"->"+(i+nameShift)+"->";
			len+=mas[0][i]*2;
		}
		ret+=(0+nameShift)+"->"+(min0i+nameShift)+"->";
		len+=mas[0][min0i]+mas[min0i][1];
		for (int i=2;i<w;i++) {
			if (i==min0i || i==min1i || visitFrom[i]!=1) continue;
			ret+=(1+nameShift)+"->"+(i+nameShift)+"->";
			len+=mas[1][i]*2;
		}
		ret+=(1+nameShift)+"->"+(min1i+nameShift)+"->"+(0+nameShift)+" ";
		len+=mas[1][min1i]+mas[min1i][0];
		ret+="("+len+")\r\n";
        if (core.DEBUG) System.out.print(ret); 
        return ret;
	}
	public static void process(float mas[][]) {
		int w=mas.length;
		//float k01[]=new float[w];
		//float k10[]=new float[w];
		
		//for (int i=2;i<w;i++) k01[i]=mas[0][i]/(mas[0][i]+mas[i][1]);
		//for (int i=2;i<w;i++) k10[i]=mas[1][i]/(mas[1][i]+mas[i][0]);
		
		int visitFrom[]=new int[w];
		for (int i=2;i<w;i++)
			if (mas[0][i]+mas[i][0]<mas[1][i]+mas[i][1])
				visitFrom[i]=0; else visitFrom[i]=1;
		
		float min01=mas[0][2]+mas[2][1];
		int min01i=2;
		for (int i=3;i<w;i++) {
			float t=mas[0][i]+mas[i][1];
			if (t<min01) {min01=t; min01i=i;}
		}
		float min10=mas[1][2]+mas[2][0];
		int min10i=2;
		for (int i=3;i<w;i++) {
			float t=mas[1][i]+mas[i][0];
			if (t<min10) {min10=t; min10i=i;}
		}
		
		int len=0;
		for (int i=2;i<w;i++) {
			if (i==min01i || visitFrom[i]!=0) continue;
			System.out.print(0+"->"+i+"->");
			len+=mas[0][i]+mas[i][0];
		}
		System.out.print(0+"->"+min01i+"->");
		for (int i=2;i<w;i++) {
			if (i==min10i || visitFrom[i]!=1) continue;
			System.out.print(1+"->"+i+"->");
		}
		System.out.print(1+"->"+min10i+"->"+0+"\r\n");
	}
}
